perm filename PPK.FAI[HAK,HPM]17 blob sn#460770 filedate 1979-07-18 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00012 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE	PPK
C00004 00003	 08/14/78 EJG *** bug below has supposedly been fixed ***
C00007 00004	BEG0:	SETOM	LINN
C00009 00005	BEG2:	PUSHJ P,HIDCHK
C00015 00006	EINIT:	SKIPE	EINITD
C00017 00007	HIDDEN←←200000		BIT IN LSTESC(LINE) RH
C00020 00008	LINED:
C00023 00009	LFEND:	SKIPN	NEEDLF		check if last line had lf
C00025 00010	DISP1:	MOVEI	C,0
C00028 00011	RCHNW:	MOVE C,[700,,WRD-1]
C00030 00012	APNT:	(A).		RH GETS CLOBBERED AT SETPR2 TIME
C00032 ENDMK
C⊗;
	TITLE	PPK
	A←1
	B←2
	C←3
	D←4
	E←5
	f←6
	ppos← 7
	pnt←10
	len←11
	NLFS←12
	col←13
	DAT←14
	CB←T←15
	TT←16
	P←17

	LPDL←←69
	BFSZ←←10000

	INTTTY←←20000	;interrupt bit for tty input (left half)
	TTYNUM←←221	;contains numbers of various kinds of terminal lines
	SYSTOP←←265
	CHKBEG←←223
        LEBUF←←330	;Displacement of actual line editor buffer from beginning of dpy hdr
	LEPOS←←334
	LSTESC←←333
	LINK←←65	;displacement in PP of link to next PP (DPYSER)
	JOBAPR←←125

	MAXWIN←←=33
	WTXTSZ←←MAXWIN*=100/5

CDPYBS:	2450		;value of DPYBSZ   (from E)  ***09/13/77 00:15--NOT USED***
ADPYBU:	1236		;address of DPYBUF (from E)  ***09/13/77 00:15--NOT USED***
AWINLI:	0;13217		;address of WINLIN (from E)
ABOTST:	0;4123		;address of BOTSTR (from E)
AHEDBL:	0;13223		;address of HEDBLK (from E)
ATRLBL:	0;13222		;address of TRLBLK (from E)

resstr:	4000,,520		;<break>P
reswho:	4000,,127		;<esc>W (gets changed)
respag:	resstr-.,,resstr
; 08/14/78 EJG *** bug below has supposedly been fixed ***
; 07/05/78 EJG - someday fix to do tabs right - bug e.g. PPKing on a DSKSIZ on DM
START:
	CALLI	A,24
	HRRZ	A,A
	MOVEM	A,TESTXX#
	SETZM	TESTYY#
 	MOVN	B,[=30337167360]
 	CAIE	A,=154279
 	CAIN	A,=199526
 	CAIA
 	CAIN	A,=166957
	SETOM	TESTYY
	SKIPE	TESTYY
	CALLI	B,43
	HRROI	C,[015000,,D]
	TTYSET C,		;get display height in D
	SUBI   D,3		;-3 for who line 
	MOVEM  D,DPYHT
	HRROI	B,[42000,,B]
	TTYSET	B,			;GET CURRENT WHOLINE JOB NUMBER IN B
	LSH	B,=9
	SKIPG	B
	MOVEI	B,200
	ADD	B,[4000,,200+"W"]	;CREATE ESC-#-W OR BREAK-W AS NEEDED
	MOVEM	B,RESWHO
	HRRZI	A,[DISMIS]		;INTERRUPT ROUTINE WILL WAKE US UP IF
	MOVEM	A,JOBAPR		;TTY INPUT OR CLOCK RUNS OUT
	MOVSI	A,INTTTY
	INTENB	A,

START0:	SETZM	EMODE
	SETOM	LINN

	MOVE P,[-LPDL,,PDL]

	MOVEI	A,LEBUF
	PEEK	A,
	MOVEM A,DLEBUF		;Displacement of editor buffer from dpy hdr addr
	MOVEI	A,LEPOS
	PEEK	A,
	MOVEM A,DLEPOS		;Displacement of editor position

	MOVEI B,TTYNUM
	PEEK B,
	MOVEI C,0
	MOVEI A,0
	LSHC A,9
	ADDI C,(A)
	JUMPN B,.-3
	MOVEM C,TTYMAX#

	MOVEI A,CHKBEG
	PEEK A,
	MOVEM A,CCHKBEG
	LSH A,-9                ;# LO PIECE PAGES
	MOVEI B,SYSTOP
	PEEK B,
	PEEK B,
	MOVE C,CCHKBEG
	SUB C,B
	MOVEM C,CBMST		;CHKBEG-SYSTOP
	LSH B,-9+5              ;STARTING HI PIECE PAGE # * 40
	ADDI B,10               ;SET 2-PIECE FLAG
	HRL B,A
	MOVEM B,XGETHI
	GETHI B,
	 JRST 4,.

	MOVE A,400321
	HLRZM A,TBLKPT
	HRRZM A,TPJMP
	MOVE A,400322
	HRRZM A,PPCALL
	MOVE A,400236
	MOVEM A,JBTLIN
	MOVE A,400237		;GET POINTER TO LETAB ENTRY OF FIRST III
	MOVEM A,LETAB
	LDB A,[POINT 9,400221,8] ;GET SCNNUM (NUMBER OF TTYS), WHICH IS ALSO
	MOVEM A,DPYL0#		 ; THE NUMBER OF THE FIRST III
BEG0:	SETOM	LINN
BEG:	MOVE	A,LINN
	JUMPGE	A,BEG2
	OUTSTR	[ASCIZ/Line? /]
NXCH:	INCHWL	A
HACH:	CAIN	A,175
	JRST	BEG			;USE ALT TO WAKE UP EARLY
	CAIN	A,15
	JRST	[  INCHWL
		   EXIT 1,
		  JRST START0]
	CAIE	A,11
	CAIN	A,40
	JRST	NXCH
	SUBI	A,60
REELUP:	INCHWL	C
	CAIN	C,15
	 JRST	[INCHRW  T
		JRST    BEG3A]
	LSH	A,3
	ADDI	A,-"0"(C)
	JRST	REELUP
BEG3A:	CAIL	A,0			;CHECK FOR REASONABLENESS
	CAMLE	A,TTYMAX
	JRST	[ OUTSTR [ASCIZ/Invalid line number!
/]
CRUFT:		  move a,respag		;block to reset the page printer
		  ttyset a,
		  JRST START0]
	MOVEM	A,LINN
	SETZM	HIDFLG#			;NEW NUMBER, HAVEN'T YET CHECKED HIDE BIT
	MOVEI	B,LSTESC
	PEEK	B,
	MOVEI	B,(B)			;DISCARD JUNK FROM LH
	ADDI	B,(A)
	MOVEM	B,HIDWRD#
	PUSHJ	P,HIDCHK
	JRST	BEG0
	LSH	A,9			;TYPE <BRK> <LINE NUMBER> W
	ADD	A,[4000,,600+"W"]
	HRROI	B,[42000,,B]		;BUT FIRST...
	TTYSET	B,			;GET CURRENT WHOLINE JOB NUMBER IN B
	JUMPLE	B,NOWHO			;IF NONE, DON'T SHOW WHOLINE
	HRROI	B,A
	TTYSET	B,
NOWHO:	MOVE	A,LINN
	JRST	BEG2A
BEG2:	PUSHJ P,HIDCHK
	JRST BEG0
BEG2A:	ADD A,LETAB		;ADD POINTER TO FIRST III'S LETAB ENTRY
	SUB A,DPYL0
	MOVEI	B,400000(A)
	MOVEM	B,LEENT
	HRRZ 	A,400000(A)
	JUMPE	A,[ OUTSTR [ASCIZ/Not in use or not a display.
/]
		  JRST CRUFT]

	MOVE T,CBMST
	ADDI T,400000
	HRRM T,APNT
	SUBI T,2
	HRLI T,-20
	MOVSM T,JMPOFF
	ADD A,PPCALL
	HLRZ A,@APNT
	SKIPN EMODE
	JRST NEMODE
	MOVE B,A
	ADDI A,LINK		;go to secondary PP if E mode
	HRRZ A,@APNT
	SKIPN A			;but not if there isn't one
	MOVE A,B
NEMODE:	MOVEI B,1(A)
	ADD B,TPJMP
	HRLM B,ENDTST
	ADD A,TBLKPT
	HRRZ A,@APNT
	ADD A,APNT
	HRLI A,444400
	MOVEM A,DLISTL
	SETZM CCNT
	SETZM MAYTAB
	MOVNI A,69
	MOVEM A,BLKCNT

	SKIPN EMODE
	JRST NEMOD2
	PUSHJ	P,EINIT
	 JRST	NEMOD2		;EINIT failed
	MOVEI A,B
	MOVE B,LINN
	TTYJOB B,

	HRRO	C,AWINLI
	MOVEI	D,WINLIN
	JOBRD	A,
	 JRST	NEMOD2
	MOVE	C,WINLIN
	MOVEM	C,ANXTLN
	MOVE	C,[WINBLK,,WINBLK+1]
	SETZM	-1(C)
	BLT	C,WINBLK+MAXWIN-1
	MOVE	E,[-MAXWIN-1,,WINBLK-1]		;pointer list
	MOVE	F,[-WTXTSZ+40,,WINTXT]		;text storage

	HRRO	C,AHEDBL
	MOVEI	D,HEDBLK
	JOBRD	A,
	 JRST	NEMOD2
	HRRO	C,ATRLBL
	MOVEI	D,TRLBLK
	JOBRD	A,
	 JRST	NEMOD2

	MOVE	C,HEDBLK
	ADD	C,[-40,,-1]
	HRRZ	D,F
	JOBRD	A,
	 JRST	NEMOD2
	HRRZ	C,(F)		;total wdcount
	ADDI	C,-2(F)		;last text wd
	HRLZ	C,C		;to LH
	HRRI	C,4(F)		;first text wd
	MOVEM	C,DLHED
	HRRZ	C,(F)		;total wdcount
	HRL	C,C		;in both halves
	ADD	F,C		;update textptr
	SETZM	-1(F)		;Sigh.  To stop text group.

	MOVE	C,TRLBLK
	ADD	C,[-40,,-1]
	HRRZ	D,F
	JOBRD	A,
	 JRST	NEMOD2
	HRRZ	C,(F)		;total wdcount
	ADDI	C,-2(F)		;last text wd
	HRLZ	C,C		;to LH
	HRRI	C,4(F)		;first text wd
	MOVEM	C,DLTRL
	HRRZ	C,(F)		;total wdcount
	HRL	C,C		;in both halves
	ADD	F,C		;update textptr
	SETZM	-1(F)		;Sigh.  To stop text group.

EWINLP:	MOVE	C,ANXTLN
	CAMN	C,ABOTST
	JRST	EWINDN	;finished (bottom of page)
	AOBJP	E,EWINDN;finished (MAXWIN lines done)
	JUMPGE	F,EWINDN;out of space (in text area)
	ADD	C,[-40,,-1]
	HRRZ	D,F
	JOBRD	A,
	 JRST	NEMOD2
	HRRZ	C,1(F)
	MOVEM	C,ANXTLN
	HRRZ	C,(F)		;total wdcount
	ADDI	C,-2(F)		;last text wd
	SKIPGE	3(F)
	SUBI	C,3		;correct last wd adr if page mark line
	HRLZ	C,C		;to LH
	HRRI	C,4(F)		;first text wd
	MOVEM	C,(E)
	HRRZ	C,(F)		;total wdcount
	CAILE	C,100
	JRST	NEMOD2
	HRL	C,C		;in both halves
	ADD	F,C		;update textptr
	SETZM	-1(F)		;Sigh.  To stop text group.
	JRST	EWINLP
EWINDN:

	MOVEI A,DLIST
	CAIA
NEMOD2:	MOVEI A,DLISTL
	MOVEM A,DLISTP
	HRRZ A,(A)
	HRLI A,444400
	MOVEM A,WRDP

	MOVEI F,0
	MOVEI NLFS,0
	MOVEI LEN,0
	MOVE PNT,[POINT 7,PPAGE+2]
LF0:	MOVEI COL,0
LF1:	PUSHJ P,RCH
	JRST LINED
	CAIN C,12
	JUMPE F,[ LDB C,PNT	;empty line, must put a space on it
		  CAIN C,15	;to make sure display gets cleared
		  SOJA LEN,$.+2	;if cr present, overwrite with space
		  IBP PNT	;if no cr, skip to new position
		  MOVEI C,40
		  DPB C,PNT
		  MOVEI C,15
		  IDPB C,PNT
		  MOVEI C,12
		  IDPB C,PNT
		  ADDI LEN,3
		  AOJA NLFS,LF0]
	CAIA C,15
	MOVEI F,-12(C)	;remember if last non-cr was a lf
        IDPB C,PNT
	CAIN C,12
	JRST [ADDI NLFS,1
	      AOJA LEN,LF0]
	CAIN C,11
	JRST LTAB
	ADDI COL,1
        AOJA LEN,LF1

LTAB:	MOVEI C,40
	IDPB C,PNT
	ADDI LEN,1
	ADDI COL,1
	TRNE COL,7
	 JRST LTAB
	AOJA LEN,LF1
EINIT:	SKIPE	EINITD
	JRST	CPOPJ1
	MOVE	B,LINN
	TTYJOB	B,
	JUMPLE	B,CPOPJ
	SEGNUM	B,
	JUMPE	B,CPOPJ
	DETSEG	0,
	PUSH	P,[EINRET]	;set exit to re-do GETHI
	ATTSEG	B,
	POPJ	P,

	MOVE	A,400011	;addr(BOTSTR)
	HRRZM	A,ABOTST
	MOVE	A,400016	;addr(DRAW)
	MOVE	A,3(A)		;DRAW+3: JRST DRAWM
	HLRZ	B,A
	CAIE	B,(<JRST>)
	POPJ	P,
	MOVE	A,0(A)		;DRAWM: PUSHJ P,DISP0
	HLRZ	B,A
	CAIE	B,(<PUSHJ 17,>)
	POPJ	P,
	MOVE	A,5(A)		;DISP0+5: PUSHJ P,WINCHK
	HLRZ	B,A
	CAIE	B,(<PUSHJ 17,>)
	POPJ	P,
	MOVE	C,A		;save PUSHJ P,WINCHK
	MOVE	A,-12(A)	;WINCHK-12: MOVEM T,WINLIN#
	HLRZ	B,A
	CAIE	B,(<MOVEM 15,>)
	POPJ	P,
	HRRZM	A,AWINLI
	MOVE	A,2(C)		;WINCHK+2: JRST CENWIN
	HLRZ	B,A
	CAIE	B,(<JRST>)
	POPJ	P,
	MOVE	A,4(A)		;CENWIN+4: AOJA A,SETWIN
	HLRZ	B,A
	CAIE	B,(<AOJA 1,>)
	POPJ	P,
	MOVE	C,A		;save AOJA A,SETWIN
	MOVE	A,6(A)		;SETWIN+6: MOVEM B,HEDBLK#
	HLRZ	B,A
	CAIE	B,(<MOVEM 2,>)
	POPJ	P,
	HRRZM	A,AHEDBL
	MOVE	A,12(C)		;SETWIN+12: MOVEM B,TRLBLK#
	HLRZ	B,A
	CAIE	B,(<MOVEM 2,>)
	POPJ	P,
	HRRZM	A,ATRLBL
	SETOM	EINITD
	JRST	CPOPJ1

EINRET:	CAIA
	AOS	(P)
	MOVE	A,XGETHI
	GETHI	A,
	 HALT	.
	POPJ	P,
HIDDEN←←200000		;BIT IN LSTESC(LINE) RH

HIDCHK:	SKIPE HIDFLG		;ALREADY OVERRIDDEN?
	JRST CPOPJ1		;YES, OK
	SETO B,
	GETLIN B		;GET OUR OWN LINE NUMBER
	MOVEI B,(B)		;NO BITS
	MOVEM B,TTMTTY		;SAVE IN CASE NEEDED FOR OVERRIDE MSG
	CAMN B,LINN
	JRST CPOPJ1		;ALLOW PEEK OF HIDDEN SELF WITHOUT ASKING
	MOVE B,HIDWRD
	HRRZ CB,CCHKBEG		;BREAK IN NON-SHUFFLING SYSTEM
	CAIGE CB,(B)		;PAST BREAK IN SYSTEM?
	ADD B,CBMST		;ADD CHKBEG-SYSTOP
	MOVE B,400000(B)
	TRNE B,HIDDEN
	PUSHJ P,OVRRID		;HIDDEN--ASK IF WANT TO OVERRIDE (SKIP IF NOT)
CPOPJ1:	AOS (P)			;SKIP-RETURN UNLESS HIDDEN AND NOT OVERRIDING
CPOPJ:	POPJ P,

OVRRID:	PPSEL 0
	PGACT 0
	HRROI B,RESSTR		;RESTORE SCREEN
	TTYSET B,
	MOVEI B,1
	SLEEP B,		;Wait for screen redrawing
	OUTSTR [ASCIZ /Hidden (ESC H typed).  Override? /]
	CLRBFI
	INCHWL B
	CLRBFI
	CAIE B,"y"
	CAIN B,"Y"
	CAIA			;OK
	JRST CPOPJ1
	GETPPN B,
	MOVEM B,TTMPRG		;SAVE HERE TEMPORARILY
	HLLZS B
	MOVEI D,TTMPRJ
	PUSHJ P,TTMSIX
	HRLZ B,TTMPRG
	MOVEI D,TTMPRG
	PUSHJ P,TTMSIX
	MOVE B,TTMTTY
	MOVEI D,TTMTTY
	PUSHJ P,TTMOCT
	MOVE B,LINN		;TELL THE GUY
	MOVEM B,TTYMNO
	BEEP B,
	MOVEI B,TTYMNO
	NULMES B,
	 JFCL
	OUTSTR [ASCIZ /
The terminal you are spying on has been notified.
/]
	SETOM HIDFLG
	MOVEI B,2
	SLEEP B,		;GIVE HIM TIME TO SEE IT!
	POPJ P,

TTYMNO:	0
	BYTCNT,,TTMMES
TTMMES:	ASCII /;;You are being spied on with PPK by [/
TTMPRJ:	0
	ASCII /,/
TTMPRG:	0
	ASCII /] on TTY/
TTMTTY:	0
	ASCII /.
/
BYTCNT←←<.-TTMMES>*5

TTMSIX:	SETZM (D)		;NO EXTRANEOUS CHARACTERS
	HRLI D,440700
SIXLP:	MOVEI C,0
	ROTC B,6
	JUMPE C,SIXLP1
	ADDI C,40
	IDPB C,D
SIXLP1:	JUMPN B,SIXLP
	POPJ P,

TTMOCT:	SETZM (D)
	HRLI D,440700
OCTLP:	IDIVI B,10
	JUMPE B,OCTLP1
	HRLM C,(P)
	PUSHJ P,OCTLP
	HLRZ C,(P)
OCTLP1:	ADDI C,"0"
	IDPB C,D
	POPJ P,
LINED:
	MOVEM	F,NEEDLF#

	SKIPN DAT,@LEENT	; append line editor
	JRST LFEND
	MOVEI B,(DAT)
	ADD B,DLEPOS		;FIND LEYPOS CELL IN DPY HDR
	HRRZ CB,CCHKBEG		;BREAK IN NON-SHUFFLING SYSTEM
	CAIGE CB,(B)		;PAST BREAK IN SYSTEM?
	 ADD B,CBMST		;ADD CHKBEG-SYSTOP
	ADDI B,400000
	SKIPL B,(B)
	JRST ONSCRN		;SIGN BIT OFF, NORMAL LINE EDITOR POSITION
	LDB B,[POINT 11,B,21]	;SIGN BIT ON, CHECK POSITION (BITS 11:21)
	TRNN B,1⊗=10		;POSITIVE?
	CAIG B,1000		;OFF SCREEN?
	JRST ONSCRN		;PROBABLY NOT
	JRST LFEND		;YES

ONSCRN:	ADD DAT,DLEBUF		;Point to buffer itself
	CAIGE CB,(DAT)		;PAST BREAK IN SYSTEM?
        ADD DAT,CBMST		;ADD CHKBEG-SYSTOP
	ADDI DAT,400000
	MOVE F,DAT		;Make copy of pointer for depositing
	MOVEI A,1
LIE:	TDNE A,(DAT)		;Is this a text word?
	AOJA DAT,LIE		;Yes
CNTDN:	CAMN F,DAT
	JRST LFEND		;Empty line editor
	HRLI F,440700
	SUBI DAT,1		;Point to last real @QKqhA]←eHA%\AEkα3≠↔HhP&"JdIα∩ε aEAA8εβH↔8'O&T∞εnNnLW∩πMtε=_<@⊂_2s7i→P"gf⊂d)⊂ )n bu→MKd~(~∀∪≠=-~A1⊂→2≤
Z2⊗r_%o'rβππO*α2∃β.s∪Mβ>KS!β∨∪3→#N)β'S~β↔↔rβO↔;"I04(Lj>Z⊗jαB:Qe~εZBu!%o≡[∃βf+9βπv!βC;"βO=β>)β∂πrβπ∂ZβW@4Ph*2⊗≥→h&∞j9α→d"εP$K[∂#↔≡Yβ'→ε+;⊃β␈3↔KO&+CC↔ h(&*∃~Qα24z<4(LJ2∩	∧→2_4PJ∞ε&*α
1E;84(&≤
&9α~aEP$K[OS?αβ?9β7+;;eε≠#πK∞≠S↔K_h(&*∃~Qα24z<4(L~ε&∃∧→1ELhP&∞εLqα
1h(&*∃~Qα24z<4(L~ε&∃∧→1ETHIo'→εc';∃ε+;∪MεK9↓s∨⊃yβ?∩↓s3→ph(&∞J9α
c	H$%↑KSMβ∞cK↔π'Iβ↔.qβO↔w!1β∪}sQβ∪πIβ'PhP&*J≥!α
ε≤ZV@4PJ∞ε&rα
1E;(4(&U∩NQα∀
∞.Vh(&&%α	α
eα:P$K[;?Kn33ebβ∪↔C␈≠'P4PJε>*
α2⊗9db⊗∞LHIoπ;"βπ∂∂␈+;P4Ph*2~|yh&N-">4&t*⊗∩20H%o←*β∪'∪r;Qβ'w≠↔KQε≠K3_hP&*J≥ &2~,r⊂4(hR
ε∞]*Ah&≤Z&B8L*6>∩(H%o'2α∃β7}#∃1β&{9∨Qε+[↔Iε33WOBβ3';*β↔∪'&{H4(LRJNPL∩ε∞.¬(4(&≤
&∀&~aEH4PJN⊗R|h&:⊗,"2_4PJ*JN J2~⊗t 4*
~.BUPJ6>Z(JB:Qe~εZBu $%o⊗+OS?⊗)β∪↔ε{O'SNs≥βO#∃βCw#H4(Lj>Z∀Lb⊗92≤
Z2⊗pH%oπv!β∂#∂∪π∂S/⊃β∂; h(22~,r⊃h&≤Z&B8Lr⊗⊗∩d0$%o≡C↔∂-εK→β3∂≠Qβ3Ns∃β#∞!β3_hP&*J≥ &2~$z:∀$K['→β≡y1β∪}q∨Qβ∞#⊃β↔G#K¬β}s∀4(Lj>Z⊗HJ
1Qh(&&%αλ&
eα:P$K[?S#/∪←'O*βπ∪⊃π≠Cπ∂*β∂Iβf04(&lzZ⊗$L→1EThP&&∩∧⊂&
2∧rP4(Lj>Z⊗HJ
1E⊂h(&&%αλ&
eα:P4PJε∩∩HJ2⊗9c_4(&"∩$&tb~M1λh*2~$z:∃i¬~.&Bd(&∩BLBP$%↑K→β;␈!β¬β&KOC3∂I1βSOβ∃β?/!β←#}c∃β.3≠↔HhP&∞εlp&:25→2∩BLBP%oN1β+W∨!βK'>CQβ;.k↔Iε{→β3Ns↔L4PJ*JN J∩&Nβλ$%o&KOC3∂Iβ'7n+∪'π&+3d4PJ∞ε6`J:2~~b∩BfE %o'2βS?=ε3↔\4PJ*JN JNFVM~ 4*≥α2>=PJ6>Z,H&
1#$%o∞#⊃βf;-βfK;↔LhP&&∩∧⊂&
2∧rP4(Lj>Z⊗HJ
1E(h(&&%αλ&
eα:P4PJ6>Z,H&
1⊂4(&L"Bλ&~bB:PhP&ε∩$H&2⊗raL4(L
∩∩$Lr2~Mcλ4(&≤
6≡∀Lr2~Md"Bf" h(&*∃~P&N∧b><4PJ*JN J∩&Nβλ$4(hRNFVM~!iαlzZ∀&
bnB>LrQ↓]eαBε≡*YJu↓↑kWOQε∪∃βS}yβ7πwIβ3'v+M1β⊗+7?[*βO?7(h*NF,
N!hLJ2∩λL→2∧4PJ∞ε&(J
1E⊂h(&*∃~P&N
*εN hP&NV∀H&:25→1D4PJ∞ε6d(&:25→2∩BLBP4(LRJNPM~FVε≤@4(&lzZ∀&∧rQ2n∧z&:Qβ92BB:∃-Jhh(&N-"h&2,q04*≥
V>NCP&&2$⊂&
2λh(&&%αλ&
eα:P4PJε∩∩HJ2⊗9cλ4(&≤
&∀&~aEH4PJ*JN JNFV⎇~ 4(M~>*≤Lr2~Me~FV>≤@4(4PJ6>Z(J:2~~b∩BfE 4(2∩&≥↓Eh&lzZ⊗$L→1@4PJJ⊗B,
Q↓↓↓3n&%α	α
eα:SxhP'7?6+%β
c1#3↔rH$$%↑3';⊃εsW7/⊃β?→π;?K∪~β≠?Iπ≠SK'v84('N#'[%ε→1T4PKπ∪∪Jβ
1M[λ4('G∪K5β~cW≠7βQ-DhP4('n{[;%ε	1D4PK∨↔SfK9β∧HH%o∨/!βSgε)β?→π#↔K7Nsπ04PJR2:*α¬1Qβ↓A@4PJ*JN"αn6>4)α	2$jε≡∀HIo'S~β¬α∩hh(%↓α↓↓↓αlzZ⊗5∧⊃2BB:∀4(J↓↓↓↓αα6>Z*↓α	2$jε≡∃[λ4)↓α↓↓↓↓α↓↓↓↓α↓α6>4*5α	eαBε≡*YD4)α↓↓↓↓α↓↓↓↓α↓↓α*∃~Qα≡LzRt4PKS3;*β¬1Iβ↓A@4PJ*JN"αn6>4)α	2$"ε≡∀HIo'S~β¬α∩ h(%↓α↓↓↓αlzZ⊗5∧⊃2BB:∀4(J↓↓↓↓αα6>Z*↓α	2$"ε≡∃[λ4)↓α↓↓↓↓α↓↓↓↓α↓α6>4*5α	eαBε≡*YD4)α↓↓↓↓α↓↓↓↓α↓↓α*∃~Qα≡LzRt4PJR2:*α¬1Qβ↓AA@hP&*J≥!αn6⎇2∃α	dJ&ε≡(H%o''→β¬αLJ$4(J↓↓↓↓αα6>Z,iα	2¬αε≡∀hP%↓↓α↓↓α6⎇2∃↓α∩b&&ε<)-D4R↓↓↓↓α↓↓↓↓α↓↓↓αlzZ⊗5∧⊃2BB:∃-DhP%↓↓α↓↓αB<
∞Q↓#↓AAAh(%↓α↓↓↓α%αfB>~↓5EAβ4)↓α↓↓↓↓α↓↓↓↓α↓α*J≥!α≡&⎇"t4(hP&*J≥!αo?/#OSHMαBε≡*YH$$K[;?Qε	β∪⊃αiβ3↔"β?WS∨#Iβ#∞s∪3∃εKQ84PI↓↓↓α↓α*J≥ &BJ$"t4(hR≡&>#P&VB<J>P&∃*~~B h(&N-">4&¬αε≡∃k	"
$HIoO↔"β3?]ε{K∪↔∩β'QαB∩⊃α-α≥∨Mε≠3?⊗+Iβ'"H4(4UαJR⊃PJN.&∧p&¬2≤bBR&hh(&6⎇2⊗$&
a]]];9\$%X⊂
AαLjB2&-→↓M6$
eαNd*⊗@4PJ∞2.LrP%"
H4(&LrR6NXJmBthP&6>4(&¬2dJ:84PJ&:∞E∩L&λhP&*J≥ &N:|zj∀4PJ∞2.LrP%@hP&&:$jN,&ZiFt4PJ*JN Jε↑ε\(4*Ntz>j∃PJ&6N%8&m5
h4(&≤b.&: I@4(LJ:∞"∃_&λ4PJ*JN J
⊗≤hRε↑ε\)h&∞J8&	c	T4(LRJNPMZ&:∞E∩\&λhP$&J-~⊗P4PH'7?6)β¬3⊗+OCπ8H%of{∂-β&yβK↔≡+QβSF)βCπ>)βCKNsS↔HhP$'S'KO↔Qε	04(HJ6>Z,Iα¬1λh($&≤b⊗⊗A∧	04(HJ⊗b&"↓E04PH&*J≥!αNR
∩Rt4PJ∞ε&`J	1	α⊃-YAh(&∞J2∀&∩a	e	[1A@4PJ∞ε&λh(&*∃~P&n≥*
%α∩a	A	[1A@4PH%α&m*2%α∩auY@hP$%αlzZ⊗5∧⊃2N2¬"&44PH%α*∃~QαB∃"∩t4PJ6>Z,H&¬1D⊃$4(Lj>Z∀L→2R⊗≥"b`4PJ∞ε&pJ
1uh(&*∃~P&"~ 4(L
:∩$L⊃1EM8H$%ntyα
V≤Z&⊗MbαVBB-∩∞εN(h(&∞J8&	b∩∃λ4PJ*JN JnN⊗$z5α⊗lz∩∀$KZO↔Q∧)β7?&(4($Jα*JN"α
⊗≡hh(&∞J8&	b∩9λ4PJ*JN JnN⊗%R5α⊗lz∩∀$KZ∂3↔∂⊃α∃βn{∪∃↓jβπ∂ZβS=βv{K7π`h($%∧RJNQ∧∩⊗≡thP&*J≥ &"ε≤@4(2J∞Dr]h&lzZ∃α~bm]Aαa2↑J"iFt4PJ6>Z,iα
2≤BJ@4PJ6>Z,Iα
1(h(&6⎇2⊗5α~b∞∞: h*J∞Dr]IhLJ2∩	∧→2↑J%4(&%∩:9α~aD4(LRJNQ¬∩∞":⊂h(&6⎇2⊗5α~b↑J⊂hRJ∞!PJN>N<)α∞∞u 4(&U∩NQα∀~":\hP&&2$⊃α
2≤BJ@4PJ∞ε6rα
26
JRελhP%α*∃~QαJ≤@4(&U*6B∃∧→2J∞@h(&*∃~Qα∞∧zB)DhP4*J≤B:	hLj>Z∃∧	2∩2M~R@4PJ∞ε&rα¬2∩dJNR0hP&*J≥!αJ∞Dr$%↑SW7AεK→β3}{/';:βπQβεcπ'9ε{3⊃α¬4(&lzZ⊗%∧→1EDhP&6>4*5α
djεfR⊂$%o≡+QβSzβ'∨;␈∪∃βS∞∪M1β≡K;∂∃∧)β3'v+Mβπ⊗)β←'/∪⊂4(LB2Ji∧	1"¬HH%o7∂Aα↑J%4(&Db1α¬e:J∩@hP&∞εlaα¬2=∩∩@4PJ*JN"αJ∞"u9H$%↑kπabα↑J∩αaβ/↔/↓β∨?Ns≤4(L
>Mα
b∩2&≥"@4(L~ε&9∧	2∩2M~R04PIαN⊗%R5α6
JRελHIoK↔≡+QβSzβπ33␈9βSπ↔→β'→ε∪π∂-π#=βCf'9α¬4(&E∩Jiα
a"¬$hP&*Vmα∃α¬e∩∞":⊂H%oO↑KAβk/∪=β↔w#K'↔_h(&"∀b%α¬c!QQQβ4(&lzZ⊗5∧	2↑J%4(&U∩NQα∀~":]⊂h(4*∀~":
PJ∞ε6rα
2⊗t"RNPhP&B>∧QαA0hP&ε∩"α
2*mα>~_hP&RJtqα
1kλ4(&zN2∃∧∩2.∞u 4(&∧zB)αα`4(&DbJ5α~b↑J∩h(&*∃~QαJ≤B:]HhP2εBu!h%"
I8$%]∩!α≡-"Mα∞dz

⊗∀*⊃αε"αN⊗R¬⊃IαRLj∀4*=∩⊃h%↓95D4T*:∩R≥!h%Ih(4*L∩V→hL∩2>∞XIL4*|∩V→hL∩2>∞XIL4*,rRIhL∩2>∞XIP4*4J2∃hL∩2>∞XIP4*∧"1h&∀b>∞-∧bB∩0hP4**∃"2&9PI@4*d*Rε	PI@4*¬α∞ε2cP%@4U"B*6βP%@4U"
2.¬!h%@hR∩BfE!h%@hP4*2Lr9h%h*∞"∃↓h%@hR
2.≤rQh%h*∞∞u!h%@hR6εf$
	h%h*↑J%↓h%@hR*6B|2→h%h*2⊗,rQh%h*N2¬"&5hK⊃)uYh*∞
m~Qh%h*∩2,∩V→hK4*∩d*B>MPI@4*D:⊗R"KP%@4T~∞".∀*≥i↓h*⊗6|"∃h%H$$%↑s?k↔⊗yβ'→εK9α∃εk?∪∀hR⊗&:M"⊃h%h(4*$b&NRβP%@4T"2&N#P4*∩dB⊗⊃hK$$$K[≠?I∧)β←'v#?]βF+π∪↔⊂h*↑&t∩2-hL∩2>∞XJ6εb<J8$$K[≠?I∧)β←'v#?]βfK;↔LhR∩2R∀ah%@r E window trailer
DLISTL:	0				;for PP

;	XDPYBU+DPYBSZ-1,,XDPYBU		;for E body

WINLIN:	0
HEDBLK:	0
TRLBLK:	0

ANXTLN:	0

buffpt:	200000,,PPAGE			;double field mode
	0
	0
	PPAGE+1

ersbuf:	BYTE (8) 17,0,46 (3) 1,2,1,4	;funct. code, chan select, funct. code
	0
erspt:	ersbuf
	erspt-ersbuf
	0
	0

DDAGE:	BYTE (8) 46,0,46 (3) 1,2,1,4
	BYTE (8) 2,1,10 (3)3,4,5,4

DMAGE:	BYTE (7) 177,30,177,30,177
	BYTE (7) 30,177,14,140,142

IIAGE:	BYTE (11) -1000,700 (3) 0,0 (1) 0,1 (2) 2 (4) 6
	BYTE (11) -1000,700 (3) 0,0 (1) 0,1 (2) 2 (4) 6

PPAGE:	BYTE (8) 46,0,46 (3) 1,2,1,4
	BYTE (8) 2,1,10 (3)3,4,5,4
	REPEAT	BFSZ,{1}

WINTXT:	BLOCK	WTXTSZ

	END START